今天接著說明其他Edge端元件。
MetaManager負責處理EdgeD與EdgeHub之間的訊息傳遞,並且負責邊緣端輕量級資料庫(SQLite)的資料讀寫。
負責邊緣端與邊緣端裝置間的事情,這裡讓我們回顧一下架構圖。
從架構圖中可以發現,從EdgeHub下來後會是MetaManager與DeviceTwin並列的單元,這裡我把他解讀成,如果是跟虛擬資源有關的物件(像是Pod、deployment、secret、configmap等等)沒有實體的物件便是交由MetaManager處理;反之DeviceTwin處理的是與實體物件有關的操作,實體指的是與"實體的裝置"溝通有關,像是圖下半部MQTT Broker後面接的那些裝置。之前實測官方Github提供與裝置連接有關的範例時,不知道為甚麼感測器的訊息卡在邊緣端無法上傳至雲端,所以找時間會再研究看看問題是不是跟這個元件有關。
負責MQTT主題的傳送與訂閱。
預設會訂閱以下主題:
- $hw/events/upload/#
- SYS/dis/upload_records
- SYS/dis/upload_records/+
- $hw/event/node/+/membership/get
- $hw/event/node/+/membership/get/+
- $hw/events/device/+/state/update
- $hw/events/device/+/state/update/+
- $hw/event/device/+/twin/+
簡單來說只要收到這些主題的發布就會做出對應的動作。例如發佈一個主題$hw/events/upload/#就會將訊息上傳,但#要符合當前主題的樹狀結構(包含子集合)。之前曾經試過發佈一個"$hw/events/upload/test"的主題,但是test沒有符合任何子集合所以訊息沒有上傳上去。
資料上傳範例(圖取自官方文件)